# This file exports variables for each tunable used in the test suite.
#
# Different platforms use different names for most tunables. To avoid littering
# the tests with conditional logic for deciding how to set each tunable, the
# logic is instead consolidated to this one file.
#
# Any use of tunables in tests must use a name defined here. New entries
# should be added to the table as needed. Please keep the table sorted
# alphabetically for ease of maintenance.
#
# Platform-specific tunables should still use a NAME from this table for
# consistency. Enter UNSUPPORTED in the column for platforms on which the
# tunable is not implemented.

export TUNABLES=""
UNAME=$(platform_name)

# NAME				FreeBSD tunable			Linux tunable				dilos tunable
cat <<%%%% |
ADMIN_SNAPSHOT			UNSUPPORTED			zfs_admin_snapshot			UNSUPPORTED
ALLOW_REDACTED_DATASET_MOUNT	allow_redacted_dataset_mount	zfs_allow_redacted_dataset_mount	zfs_allow_redacted_dataset_mount
ARC_MAX				arc.max				zfs_arc_max				zfs_arc_max
ARC_MIN				arc.min				zfs_arc_min				zfs_arc_min
ASYNC_BLOCK_MAX_BLOCKS		async_block_max_blocks		zfs_async_block_max_blocks		zfs_async_block_max_blocks
CHECKSUM_EVENTS_PER_SECOND	checksum_events_per_second	zfs_checksum_events_per_second		zfs_checksum_events_per_second
COMMIT_TIMEOUT_PCT		commit_timeout_pct		zfs_commit_timeout_pct			zfs_commit_timeout_pct
COMPRESSED_ARC_ENABLED		compressed_arc_enabled		zfs_compressed_arc_enabled		zfs_compressed_arc_enabled
CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS	condense.indirect_commit_entry_delay_ms	zfs_condense_indirect_commit_entry_delay_ms	zfs_condense_indirect_commit_entry_delay_ms
CONDENSE_INDIRECT_OBSOLETE_PCT	condense.indirect_obsolete_pct	zfs_condense_indirect_obsolete_pct	zfs_condense_indirect_obsolete_pct
CONDENSE_MIN_MAPPING_BYTES	condense.min_mapping_bytes	zfs_condense_min_mapping_bytes		zfs_condense_min_mapping_bytes
DBUF_CACHE_MAX_BYTES		dbuf_cache.max_bytes		dbuf_cache_max_bytes			dbuf_cache_max_bytes
DEADMAN_CHECKTIME_MS		deadman_checktime_ms		zfs_deadman_checktime_ms		zfs_deadman_checktime_ms
DEADMAN_FAILMODE		deadman_failmode		zfs_deadman_failmode			zfs_deadman_failmode
DEADMAN_SYNCTIME_MS		deadman_synctime_ms		zfs_deadman_synctime_ms			zfs_deadman_synctime_ms
DEADMAN_ZIOTIME_MS		deadman_ziotime_ms		zfs_deadman_ziotime_ms			zfs_deadman_ziotime_ms
DISABLE_IVSET_GUID_CHECK	disable_ivset_guid_check	zfs_disable_ivset_guid_check		zfs_disable_ivset_guid_check
DMU_OFFSET_NEXT_SYNC		dmu_offset_next_sync		zfs_dmu_offset_next_sync		zfs_dmu_offset_next_sync
INITIALIZE_CHUNK_SIZE		initialize_chunk_size		zfs_initialize_chunk_size		zfs_initialize_chunk_size
INITIALIZE_VALUE		initialize_value		zfs_initialize_value			zfs_initialize_value
KEEP_LOG_SPACEMAPS_AT_EXPORT	keep_log_spacemaps_at_export	zfs_keep_log_spacemaps_at_export	zfs_keep_log_spacemaps_at_export
LUA_MAX_MEMLIMIT		lua.max_memlimit		zfs_lua_max_memlimit			zfs_lua_max_memlimit
L2ARC_MFUONLY			l2arc.mfuonly			l2arc_mfuonly				l2arc_mfuonly
L2ARC_NOPREFETCH		l2arc.noprefetch		l2arc_noprefetch			l2arc_noprefetch
L2ARC_REBUILD_BLOCKS_MIN_L2SIZE	l2arc.rebuild_blocks_min_l2size	l2arc_rebuild_blocks_min_l2size		l2arc_rebuild_blocks_min_l2size
L2ARC_REBUILD_ENABLED		l2arc.rebuild_enabled		l2arc_rebuild_enabled			l2arc_rebuild_enabled
L2ARC_TRIM_AHEAD		l2arc.trim_ahead		l2arc_trim_ahead			l2arc_trim_ahead
L2ARC_WRITE_BOOST		l2arc.write_boost		l2arc_write_boost			l2arc_write_boost
L2ARC_WRITE_MAX			l2arc.write_max			l2arc_write_max				l2arc_write_max
LIVELIST_CONDENSE_NEW_ALLOC	livelist.condense.new_alloc	zfs_livelist_condense_new_alloc		zfs_livelist_condense_new_alloc
LIVELIST_CONDENSE_SYNC_CANCEL	livelist.condense.sync_cancel	zfs_livelist_condense_sync_cancel	zfs_livelist_condense_sync_cancel
LIVELIST_CONDENSE_SYNC_PAUSE	livelist.condense.sync_pause	zfs_livelist_condense_sync_pause	zfs_livelist_condense_sync_pause
LIVELIST_CONDENSE_ZTHR_CANCEL	livelist.condense.zthr_cancel	zfs_livelist_condense_zthr_cancel	zfs_livelist_condense_zthr_cancel
LIVELIST_CONDENSE_ZTHR_PAUSE	livelist.condense.zthr_pause	zfs_livelist_condense_zthr_pause	zfs_livelist_condense_zthr_pause
LIVELIST_MAX_ENTRIES		livelist.max_entries		zfs_livelist_max_entries		zfs_livelist_max_entries
LIVELIST_MIN_PERCENT_SHARED	livelist.min_percent_shared	zfs_livelist_min_percent_shared		zfs_livelist_min_percent_shared
MAX_DATASET_NESTING		max_dataset_nesting		zfs_max_dataset_nesting			zfs_max_dataset_nesting
MAX_MISSING_TVDS		max_missing_tvds		zfs_max_missing_tvds			zfs_max_missing_tvds
METASLAB_DEBUG_LOAD		metaslab.debug_load		metaslab_debug_load			metaslab_debug_load
METASLAB_FORCE_GANGING		metaslab.force_ganging		metaslab_force_ganging			metaslab_force_ganging
MULTIHOST_FAIL_INTERVALS	multihost.fail_intervals	zfs_multihost_fail_intervals		zfs_multihost_fail_intervals
MULTIHOST_HISTORY		multihost.history		zfs_multihost_history			UNSUPPORTED
MULTIHOST_IMPORT_INTERVALS	multihost.import_intervals	zfs_multihost_import_intervals		zfs_multihost_import_intervals
MULTIHOST_INTERVAL		multihost.interval		zfs_multihost_interval			zfs_multihost_interval
OVERRIDE_ESTIMATE_RECORDSIZE	send.override_estimate_recordsize	zfs_override_estimate_recordsize	zfs_override_estimate_recordsize
PREFETCH_DISABLE		prefetch.disable		zfs_prefetch_disable			zfs_prefetch_disable
REBUILD_SCRUB_ENABLED		rebuild_scrub_enabled		zfs_rebuild_scrub_enabled		zfs_rebuild_scrub_enabled
REMOVAL_SUSPEND_PROGRESS	removal_suspend_progress	zfs_removal_suspend_progress		zfs_removal_suspend_progress
REMOVE_MAX_SEGMENT		remove_max_segment		zfs_remove_max_segment			zfs_remove_max_segment
RESILVER_MIN_TIME_MS		resilver_min_time_ms		zfs_resilver_min_time_ms		zfs_resilver_min_time_ms
SCAN_LEGACY			scan_legacy			zfs_scan_legacy				zfs_scan_legacy
SCAN_SUSPEND_PROGRESS		scan_suspend_progress		zfs_scan_suspend_progress		zfs_scan_suspend_progress
SCAN_VDEV_LIMIT			scan_vdev_limit			zfs_scan_vdev_limit			zfs_scan_vdev_limit
SEND_HOLES_WITHOUT_BIRTH_TIME	send_holes_without_birth_time	send_holes_without_birth_time		send_holes_without_birth_time
SLOW_IO_EVENTS_PER_SECOND	slow_io_events_per_second	zfs_slow_io_events_per_second		zfs_slow_io_events_per_second
SPA_ASIZE_INFLATION		spa.asize_inflation		spa_asize_inflation			spa_asize_inflation
SPA_DISCARD_MEMORY_LIMIT	spa.discard_memory_limit	zfs_spa_discard_memory_limit		zfs_spa_discard_memory_limit
SPA_LOAD_VERIFY_DATA		spa.load_verify_data		spa_load_verify_data			spa_load_verify_data
SPA_LOAD_VERIFY_METADATA	spa.load_verify_metadata	spa_load_verify_metadata		spa_load_verify_metadata
TRIM_EXTENT_BYTES_MIN		trim.extent_bytes_min		zfs_trim_extent_bytes_min		zfs_trim_extent_bytes_min
TRIM_METASLAB_SKIP		trim.metaslab_skip		zfs_trim_metaslab_skip			zfs_trim_metaslab_skip
TRIM_TXG_BATCH			trim.txg_batch			zfs_trim_txg_batch			zfs_trim_txg_batch
TXG_HISTORY			txg.history			zfs_txg_history				UNSUPPORTED
TXG_TIMEOUT			txg.timeout			zfs_txg_timeout				zfs_txg_timeout
UNLINK_SUSPEND_PROGRESS		UNSUPPORTED			zfs_unlink_suspend_progress		UNSUPPORTED
VDEV_FILE_LOGICAL_ASHIFT	vdev.file.logical_ashift	vdev_file_logical_ashift		vdev_file_logical_ashift
VDEV_FILE_PHYSICAL_ASHIFT	vdev.file.physical_ashift	vdev_file_physical_ashift		vdev_file_physical_ashift
VDEV_MAX_AUTO_ASHIFT		vdev.max_auto_ashift		zfs_vdev_max_auto_ashift		zfs_vdev_max_auto_ashift
VDEV_MIN_MS_COUNT		vdev.min_ms_count		zfs_vdev_min_ms_count			zfs_vdev_min_ms_count
VDEV_VALIDATE_SKIP		vdev.validate_skip		vdev_validate_skip			vdev_validate_skip
VOL_INHIBIT_DEV			UNSUPPORTED			zvol_inhibit_dev			UNSUPPORTED
VOL_MODE			vol.mode			zvol_volmode				UNSUPPORTED
VOL_RECURSIVE			vol.recursive			UNSUPPORTED				UNSUPPORTED
ZEVENT_LEN_MAX			zevent.len_max			zfs_zevent_len_max			zfs_zevent_len_max
ZEVENT_RETAIN_MAX		zevent.retain_max		zfs_zevent_retain_max			zfs_zevent_retain_max
ZIO_SLOW_IO_MS			zio.slow_io_ms			zio_slow_io_ms				zio_slow_io_ms
%%%%
while read name FreeBSD Linux dilos; do
	eval "export ${name}=\$${UNAME}"
	if [[ -z $TUNABLES ]]; then
		export TUNABLES="$name"
	else
		export TUNABLES="$TUNABLES $name"
	fi
done
